const knowArchiveApi = {
    /**
     * 知识库文档全部
     *
     * @param {string} kb 知识库编号
     * @returns {Promise<KnowArchiveWholeResponse[]>}
     * @author zero
     */
    whole(kb: string): Promise<KnowArchiveWholeResponse[]> {
        return $request.get<KnowArchiveWholeResponse[]>({
            url: '/agent/know/archive/whole',
            params: {
                kb
            }
        })
    },

    /**
     * 知识库文档列表
     *
     * @param params
     * @param {number} [params.page_no] 当前页码
     * @param {number} [params.page_size] 每页条数
     * @param {string} [params.keyword] 搜索关键字
     * @param {string} params.kb 知识库编号
     * @returns {Promise<KnowArchiveListResponse[]>}
     * @author zero
     */
    lists(params: {
        page_no?: number;
        page_size?: number;
        keyword?: string;
        kb: string;
    }): Promise<KnowArchiveListResponse[]> {
        return $request.get<KnowArchiveListResponse[]>({
            url: '/agent/know/archive/lists',
            params
        })
    },

    /**
     * 知识库文档详细
     *
     * @param {string} fid 文档唯一标识符
     * @returns {Promise<KnowArchiveDetailResponse[]>}
     * @author zero
     */
    detail(fid: string): Promise<KnowArchiveDetailResponse[]> {
        return $request.get<KnowArchiveDetailResponse[]>({
            url: '/agent/know/archive/detail',
            params: {
                fid
            }
        })
    },

    /**
     * 知识库文档检测
     *
     * @param {string[]} ids 文档编号
     * @returns {Promise<KnowArchiveListResponse[]>}
     * @author zero
     */
    inspect(ids: string[]): Promise<KnowArchiveListResponse[]> {
        return $request.post<KnowArchiveListResponse[]>({
            url: '/agent/know/archive/inspect',
            params: {
                ids
            }
        })
    },

    /**
     * 知识库文档重命名
     *
     * @param params 重命名参数
     * @param {number} params.id 要重命名的文档ID
     * @param {string} params.name 文档的新名称
     * @returns {Promise<any>}
     */
    rename(params: {
        id: number,
        name: string
    }): Promise<any> {
        return $request.post({
            url: '/agent/know/archive/rename',
            params
        })
    },

    /**
     * 知识库文档合并
     *
     * @param params
     * @param {string} params.source_fid 要合并的源文档ID
     * @param {string} params.target_fid 目标文档标识
     * @returns {Promise<any>}
     * @author zero
     */
    merge(params: {
        source_fid: string,
        target_fid: string
    }): Promise<any> {
        return $request.post({
            url: '/agent/know/archive/merge',
            params
        })
    },

    /**
     * 知识库文档删除
     *
     * @param {number} code 要删除的文档编号
     * @returns {Promise<any>}
     */
    delete(code: string): Promise<any> {
        return $request.post({
            url: '/agent/know/archive/delete',
            params: {
                fid: code
            }
        })
    },

    /**
     * 解析文档内容
     * @param params 解析参数
     * @param {string} params.kb 知识库标识
     * @param {string} params.scene 场景标识
     * @param {number} params.chunk_size 文档分块大小（单位：字符）
     * @param {number} params.chunk_overlap 分块重叠大小（单位：字符）
     * @param {string} params.separators 文本分隔符
     * @param {string} params.url 文档URL地址
     * @returns {Promise<KnowArchiveParseResponse>} 返回文档解析结果
     */
    parse(params: {
        kb: string,
        scene: string,
        chunk_size: number,
        chunk_overlap: number,
        separators: string,
        url: string
    }): Promise<KnowArchiveParseResponse> {
        return $request.post<KnowArchiveParseResponse>({
            url: '/agent/know/archive/parse',
            params
        })
    },

    /**
     * 批量导入文档
     *
     * @param params 导入参数
     * @param {string} params.kb 知识库标识
     * @param {string} params.scene 场景标识
     * @param {string} params.train_mode 训练模式
     * @param {number} params.chunk_size 文档分块大小（单位：字符）
     * @param {number} params.chunk_overlap 分块重叠大小（单位：字符）
     * @param {string} params.separators 文本分隔符
     * @param {any[]} params.files 要导入的文件列表
     * @returns {Promise<any>}
     */
    imports(params: {
        kb: string,
        scene: string,
        train_mode: string,
        chunk_size: number,
        chunk_overlap: number,
        separators: string,
        files: any[]
    }): Promise<any> {
        return $request.post({
            url: '/agent/know/archive/imports',
            params
        })
    }
}

export default knowArchiveApi
